package Hot100;

import common.ListNode;

/**
 * @author zhangmin
 * @create 2021-12-30 18:05
 */
public class getIntersectionNode160 {

    /**
     * 160. 相交链表
     * 给你两个单链表的头节点 headA 和 headB ，请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点，返回 null 。
     * 双指针：同步前进，当headA到达队尾时，从headB开始，当headB到达队尾时从headA开始
     * */
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        if (headA==null||headB==null){
            return null;
        }
        ListNode p1=headA,p2=headB;
        while (p1!=p2){
            if (p1==null){
                p1=headB;
            }else {
                p1=p1.next;
            }
            if (p2==null){
                p2=headA;
            }else {
                p2=p2.next;
            }
        }
        return p1;
    }
}
